package com.itheima.a05objectsdemo;

import java.util.Objects;

public class ObjectsDemo01 {

    public static void main(String[] args) {

        // 调用方法
        method_02();

    }

    // 测试nonNull方法
    public static void method_04() {

        // 创建一个学生对象
        Student s1 = new Student("itheima", "14");

        // 调用Objects类中的nonNull方法
        boolean result = Objects.nonNull(s1);

        // 输出结果
        System.out.println(result);

    }

    // 测试isNull方法
    public static void method_03() {

        // 创建一个学生对象
        Student s1 = new Student("itheima", "14");

        // 调用Objects类中的isNull方法
        boolean result = Objects.isNull(s1);

        // 输出结果
        System.out.println(result);

    }

    // 测试equals方法
    public static void method_02() {

        // 创建两个学生对象
        Student s1 = null;
        //Student s1 = new Student("itheima" , "14") ;
        Student s2 = new Student("itheima", "14");

        // 调用Objects类中的equals方法，比较两个对象是否相等
        boolean result = Objects.equals(s1, s2);     // 如果Student没有重写Object类中的equals方法，此处比较的还是对象的地址值

        // 输出结果
        System.out.println(result);
        //细节
        //1、方法底层会判断s1是否为null，如果为null，直接返回false
        //2、如果s1不为null，会调用s1的equals方法，比较s1和s2是否相等
        //3、此时s1是Student类型，所有最终还是会调用Student中的equals方法，
        //如果没有重写，比较地址值，如果重写了，比较属性值。

    }

    // 测试toString方法
    public static void method_01() {

        // 创建一个学生对象
        Student s1 = new Student("itheima", "14");

        // 调用Objects中的toString方法,获取s1对象的字符串表现形式
        String result = Objects.toString(s1);       // 如果Student没有重写Object类中的toString方法，此处还是返回的对象的地址值

        // 输出结果
        System.out.println(result);

    }

}
